import java.util.Arrays;

class EmptyException extends RuntimeException {
    public EmptyException() {
        //这是一个提示顺序表为空的异常
    }

    public EmptyException(String massage) {
        super(massage);
    }
}

class PosWrongfulException extends RuntimeException{
    public PosWrongfulException() {
        //PosWrongfulException 一个提示不合法的异常
    }

    public PosWrongfulException(String massage) {
        super(massage);
    }
}

class TestArrayList {
    private int[] elem; //未初始化的数组
    private int usedSize; //记录有效的数据个数
    public static final int DEFAULT_SIZE = 10;

    //构造方法
    public TestArrayList() {
        this.elem = new int[DEFAULT_SIZE];//数组大小为10个元素
    }

    //打印顺序表中所有的元素，这并不是顺序表中的方法，而是为了观看测试结果给出的
    public void disPlay() {
        for (int i = 0; i < this.usedSize; i++) {//usedSize是有效数据个数
            System.out.print(this.elem[i] + " "); //元素之间加上空格
        }
        System.out.println();//输出完后换行
    }

    //检查顺序表是否满了的方法
    public boolean isFull() {
        //size()是获取顺序表长度的方法

        /*if (size() >= this.elem.length) { //满了
            return true;
        }else { //没满
            return false;
        }*/

        //优化过后的写法 - 会自动比较出一个true || false
        return size() >= this.elem.length;
    }

    //默认在顺序表最后新增元素 - data是要新增的元素
    public void add(int data) {
        //1. 检查当前的顺序表是不是满了
        //isFull()方法中会有一个值来表示当前顺序表是不是满了
        if (isFull()) {
            //2. 如果满了 就要进行扩容
            //将elem扩容位原来的2倍
            this.elem = Arrays.copyOf(this.elem, 2 * this.elem.length);
        }

        //3.新增元素
        //当前usedSize(有效元素个数)的值就是顺序表末尾的下标 - 要想新增赋值即可
        this.elem[this.usedSize] = data;

        //4.有效元素个数加1 - usedSize
        this.usedSize++;
    }

    public int size() {
        return this.usedSize;
    }
}

public class TestList {
    public static void main(String[] args) {
        TestList testList = new TestList();

        //测试add()方法
        //testList.add(1);//将顺序表中添加一个1元素
        //testList.add(2);
        //testList.add(3);
        //testList.disPlay();//调用打印方法定义顺序表中的所有元素
    }
}